﻿using System;
using System.Collections.Generic;
namespace Rarous.TexyNet
{
    /// <summary>
    /// Rozhranní pro držitele informací o nastavení Texy!
    /// </summary>
    public interface ITexySettings
    {
        /// <summary>
        /// Příznak, zda-li jsou povoleny třídy.
        /// </summary>
        bool AllowClasses { get; set; }
        /// <summary>
        /// Vrací seznam povolených tříd.
        /// </summary>
        IList<string> AllowedClasses { get; }
        /// <summary>
        /// Vrací seznam povolených stylů.
        /// </summary>
        IList<string> AllowedStyles { get; }
        /// <summary>
        /// Vrací nebo nastavuje seznam povolených tagů.
        /// </summary>
        IList<Tag> AllowedTags { get; }
        /// <summary>
        /// Příznak, zda-li jsou povoleny styly.
        /// </summary>
        bool AllowStyles { get; set; }
        /// <summary>
        /// Příznak, zda-li jsou povoleny tagy.
        /// </summary>
        bool AllowTags { get; set; }
        /// <summary>
        /// Nastavení modulu bloků.
        /// </summary>
        Modules.BlockModule BlockModule { get; }
        /// <summary>
        /// Nastavení modulu formátovače výstupu.
        /// </summary>
        Modules.FormatterModule FormatterModule { get; }
        /// <summary>
        /// Nastavení modulu nadpisů.
        /// </summary>
        Modules.HeadingModule HeadingModule { get; }
        /// <summary>
        /// Nastavení modulu obrázků s popiskem.
        /// </summary>
        Modules.ImageDescriptionModule ImageDescriptionModule { get; }
        /// <summary>
        /// Nastavení modulu obrázků.
        /// </summary>
        Modules.ImageModule ImageModule { get; }
        /// <summary>
        /// Nastavení modulu odkazů.
        /// </summary>
        Modules.LinkModule LinkModule { get; }
        /// <summary>
        /// Příznak, zda-li se mají zalamovat dlouhé řádky.
        /// </summary>
        bool MergeLines { get; set; }
        /// <summary>
        /// Příznak, zda-li má dojí k zakódování e-mailových adres (ochrana před spamboty).
        /// </summary>
        bool ObfuscateEmail { get; set; }
        /// <summary>
        /// Nastavení modulu citací.
        /// </summary>
        Modules.QuoteModule QuoteModule { get; }
        /// <summary>
        /// Příznak, zda-li má Texy! pracovat v Safe módu.
        /// </summary>
        bool SafeMode { get; set; }
        /// <summary>
        /// Příznak, zda-li má Texy! pracovat v jednořádkovém režimu.
        /// </summary>
        bool SingleLine { get; set; }
        /// <summary>
        /// Nastavení modulu emotikonů.
        /// </summary>
        Modules.SmiliesModule SmiliesModule { get; }
    }
}
